package com.ruoyi.business.domain;

import com.ruoyi.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 报名信息对象 t_register_info
 *
 * @author Tellsea
 * @date 2024-01-24
 */
@Data
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class TRegisterInfo extends BaseEntity {

    /**
     * 主键
     */
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 代理申请用户ID
     */
    private Long agentUserId;

    /**
     * 招生信息ID
     */
    private Long registerNeedId;

    /**
     * 进修科室ID
     */
    private Long registerDeptId;

    /**
     * 招生类型ID
     */
    private Long registerTypeId;

    /**
     * 录取资格
     */
    private String registerEnter;

    /**
     * 招生年份
     */
    @Excel(name = "招生年份")
    private String registerYear;

    /**
     * 招生批次
     */
    @Excel(name = "招生批次")
    private String batchName;

    /**
     * 生源单位类型
     */
    @Excel(name = "生源单位类型")
    private String sourceUnitType;

    /**
     * 学员标签：第*次提交
     */
    @Excel(name = "学员标签：第*次提交")
    private Long labelSubmit;

    /**
     * 学员标签：第*次进修
     */
    @Excel(name = "学员标签：第*次进修")
    private Long labelEngage;

    /**
     * 招生时间
     */
    @Excel(name = "招生时间")
    private String batchDate;

    /**
     * 原单位/医院名称
     */
    @Excel(name = "原单位/医院名称")
    private String unitHospitalName;

    /**
     * 申请人姓名
     */
    @Excel(name = "申请人姓名")
    private String applicantName;

    /**
     * 进修形式
     */
    @Excel(name = "进修形式")
    private String educationType;

    /**
     * 进修期限
     */
    @Excel(name = "进修期限")
    private String durationName;

    /**
     * 进修费用
     */
    @Excel(name = "进修费用")
    private String durationMoney;

    /**
     * 进修开始时间
     */
    @Excel(name = "进修开始时间")
    @NotBlank(message = "【进修开始时间】不能为空")
    @Getter(AccessLevel.NONE)
    private String durationStartDate;

    /**
     * 进修结束时间
     */
    @Excel(name = "进修结束时间")
    @NotBlank(message = "【进修结束时间】不能为空")
    @Getter(AccessLevel.NONE)
    private String durationEndDate;

    /**
     * 进修要求与目的
     */
    @Excel(name = "进修要求与目的")
    private String educationAskObjective;

    /**
     * 姓名
     */
    @Excel(name = "姓名")
    private String userName;

    /**
     * 性别 1-男 2-女
     */
    @Excel(name = "性别 1-男 2-女")
    private Long gender;

    /**
     * 民族
     */
    @Excel(name = "民族")
    private String nation;

    /**
     * 从事专业
     */
    @Excel(name = "从事专业")
    private String profession;

    /**
     * 政治面貌
     */
    @Excel(name = "政治面貌")
    private String politicalOutlook;

    /**
     * 健康状况
     */
    @Excel(name = "健康状况")
    private String healthCondition;

    /**
     * 职称
     */
    @Excel(name = "职称")
    private String technicalTitle;

    /**
     * 职务
     */
    @Excel(name = "职务")
    private String duties;

    /**
     * 证件类型
     */
    @Excel(name = "证件类型")
    private String idCardType;

    /**
     * 身份证号
     */
    @Excel(name = "身份证号")
    private String idCard;

    /**
     * 出生日期
     */
    @Excel(name = "出生日期")
    private String birthday;

    /**
     * 年龄
     */
    @Excel(name = "年龄")
    private Long age;

    /**
     * 最高学历
     */
    @Excel(name = "最高学历")
    private String highestDegree;

    /**
     * 毕业院校
     */
    @Excel(name = "毕业院校")
    private String graduateSchool;

    /**
     * 何时参加工作
     */
    @Excel(name = "何时参加工作")
    private String startWorking;

    /**
     * 何时获得职业资格证书
     */
    @Excel(name = "何时获得职业资格证书")
    private String doctorCertificateDate;

    /**
     * 资格证书编号
     */
    @Excel(name = "资格证书编号")
    private String doctorCertificateNumber;

    /**
     * 执业证书编号
     */
    @Excel(name = "执业证书编号")
    private String practicingCertificateNumber;

    /**
     * 操作设备的名称
     */
    @Excel(name = "操作设备的名称")
    private String operatingDevice;

    /**
     * 是否从事放射诊疗技术岗位
     */
    @Excel(name = "是否从事放射诊疗技术岗位")
    private Long engagedRadiatePost;

    /**
     * 手机号码
     */
    @Excel(name = "手机号码")
    private String phoneNumber;

    /**
     * 邮箱
     */
    @Excel(name = "邮箱")
    private String email;

    /**
     * 单位电话
     */
    @Excel(name = "单位电话")
    private String workTelephone;

    /**
     * 邮编
     */
    @Excel(name = "邮编")
    private String zipCode;

    /**
     * 单位等级
     */
    @Excel(name = "单位等级")
    private String unitLevel;

    /**
     * 医院级别
     */
    @Excel(name = "医院级别")
    private String hospitalLevel;

    /**
     * 单位名称
     */
    @Excel(name = "单位名称")
    private String unitName;

    /**
     * 单位地址(省)
     */
    @Excel(name = "单位地址(省)")
    private String unitProvince;

    /**
     * 单位地址(市)
     */
    @Excel(name = "单位地址(市)")
    private String unitCity;

    /**
     * 单位编码数组保存
     */
    private String unitCodes;

    /**
     * 单位地址(区)
     */
    @Excel(name = "单位地址(区)")
    private String unitDistrict;

    /**
     * 单位地址(地址)
     */
    @Excel(name = "单位地址(地址)")
    private String unitAddress;

    /**
     * 政治表现
     */
    @Excel(name = "政治表现")
    private String politicalRepresentation;

    /**
     * 拟进修专业方面的工作基础
     */
    @Excel(name = "拟进修专业方面的工作基础")
    private String proposedMajor;

    /**
     * 进修申请表
     */
    @Excel(name = "进修申请表")
    private String registerApplicationForm;

    /**
     * 毕业证书
     */
    @Excel(name = "毕业证书")
    private String diploma;

    /**
     * 医疗机构等级图片
     */
    @Excel(name = "医疗机构等级图片")
    private String medicalInstitutionLevel;

    /**
     * 资格证书
     */
    @Excel(name = "资格证书")
    private String qualification;

    /**
     * 执业证书
     */
    @Excel(name = "执业证书")
    private String practicingCertificate;

    /**
     * 执业注册信息查询结果
     */
    @Excel(name = "执业注册信息查询结果")
    private String practiceResult;

    /**
     * 职称证书
     */
    @Excel(name = "职称证书")
    private String professionalTitleCertificate;

    /**
     * 身份证正面
     */
    @Excel(name = "身份证正面")
    private String idCardFront;

    /**
     * 身份证背面
     */
    @Excel(name = "身份证背面")
    private String idCardBack;

    /**
     * 电子证件照
     */
    @Excel(name = "电子证件照")
    private String electronicIdPhoto;

    /**
     * 其他补充附件
     */
    @Excel(name = "其他补充附件")
    private String otherAttachment;

    /**
     * 申请时间
     */
    private Date applyTime;

    /**
     * 审批等级，默认值为0
     */
    private Long auditLevel;

    /**
     * 综合评分
     */
    @Excel(name = "综合评分")
    private BigDecimal scoreTotal;

    /**
     * 考评评级
     */
    @Excel(name = "考评评级")
    private String scoreLevel;

    /**
     * 考评评级人
     */
    @Excel(name = "考评评级人")
    private Long scoreLevelUserId;

    /**
     * 老师ID(多个)
     */
    private String teacherUserId;

    /**
     * 结业审批等级，默认值为0
     */
    private Long graduationAuditLevel;

    /**
     * 审批状态
     */
    private Long auditStatus;

    /**
     * 通知状态
     */
    private Long noticeStatus;

    /**
     * 报到状态
     */
    private Long sureStatus;

    /**
     * 分配状态
     */
    private Long allocationStatus;

    /**
     * 考核状态
     */
    private Long cultureStatus;

    /**
     * 请假状态
     */
    private Long leaveStatus;

    /**
     * 考勤状态
     */
    private Long currentStatus;

    /**
     * 结业状态
     */
    private Long graduationStatus;

    /**
     * 结业审批状态
     */
    private Long graduationAuditStatus;

    /**
     * 评价状态
     */
    private Long evaluateStatus;

    /**
     * 缴费状态
     */
    private Long payStatus;

    /**
     * 告知书
     */
    private String informUrl;

    /**
     * 承诺书
     */
    private String promiseUrl;

    /**
     * 是否删除 1-是 2-否
     */
    @TableField(fill = FieldFill.INSERT)
    private Long deleteStatus;

    /**
     * 显微镜血管缝合培训、培训费（2800）是否参加培训（1:参加，2：不参加）
     */
    private Integer joinMicrosutureTrain;

    public String getDurationStartDate() {
        if(durationStartDate!=null && durationStartDate.split("/").length>=3){
            this.durationStartDate = durationStartDate.substring(0,durationStartDate.indexOf("/",durationStartDate.indexOf("/")+1));
        }
        return durationStartDate;
    }

    public String getDurationEndDate() {
        if(durationEndDate!=null && durationEndDate.split("/").length>=3){
            this.durationEndDate = durationEndDate.substring(0,durationEndDate.indexOf("/",durationEndDate.indexOf("/")+1));
        }
        return durationEndDate;
    }
}
